创建第一个 Express.js 应用
1. Express.js 简介和特点
Express.js 是一个基于 Node.js 的快速、开放、极简的 Web 框架。它提供了一套强大的功能,用于构建各种类型的 Web 应用程序和 API。Express.js 的特点包括:
- 轻量级:Express.js 只提供最基本的 Web 开发功能,不强制使用任何特定的模板引擎或数据库。
- 灵活性:开发者可以根据需求自由选择和集成各种中间件。
- 路由:Express.js 提供了强大的路由功能,可以轻松处理不同 URL 路径的请求。
- 中间件:Express.js 支持中间件,可以在请求处理过程中插入自定义逻辑。
2. 环境搭建
在开始创建 Express.js 应用之前,我们需要确保已经安装了 Node.js 和 npm(Node Package Manager)。
2.1 安装 Node.js 和 npm
-
下载 Node.js:访问 Node.js 官网,下载并安装适合你操作系统的 Node.js 版本。
-
验证安装:打开终端(命令行工具),输入以下命令来验证 Node.js 和 npm 是否安装成功:
node -v npm -v如果安装成功,你应该会看到 Node.js 和 npm 的版本号。
2.2 初始化项目
-
创建项目目录:在终端中创建一个新的目录,并进入该目录:
mkdir my-express-app cd my-express-app -
初始化 npm 项目:在项目目录中运行以下命令来初始化 npm 项目:
npm init -y这将生成一个
package.json文件,用于管理项目的依赖和脚本。 -
安装 Express.js:使用 npm 安装 Express.js:
npm install express
3. 创建第一个 Express.js 应用
3.1 创建主文件
在项目目录中创建一个名为 app.js 的文件,这是我们 Express.js 应用的主文件。
3.2 编写基本代码
在 app.js 文件中编写以下代码:
// 引入 Express 模块
const express = require('express');
// 创建 Express 应用实例
const app = express();
// 定义一个简单的路由
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
// 启动服务器,监听端口 3000
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
3.3 运行应用
在终端中运行以下命令来启动应用:
node app.js
如果一切顺利,你应该会看到终端输出 Server is running on http://localhost:3000。
3.4 访问应用
打开浏览器,访问 http://localhost:3000,你应该会看到页面显示 Hello, Express!。
4. 路由基础
在 Express.js 中,路由用于定义如何响应客户端对特定端点的请求。路由由一个 HTTP 方法、一个路径和一个回调函数组成。
4.1 基本路由示例
app.get('/about', (req, res) => {
res.send('This is the about page.');
});
4.2 处理不同 HTTP 方法
Express.js 支持多种 HTTP 方法,如 GET、POST、PUT、DELETE 等。
app.post('/submit', (req, res) => {
res.send('Form submitted successfully.');
});
5. 中间件概念
中间件是 Express.js 的核心概念之一。它是一个函数,可以访问请求对象(req)、响应对象(res)以及下一个中间件函数(next)。
5.1 使用中间件
app.use((req, res, next) => {
console.log('Time:', Date.now());
next();
});
5.2 中间件的顺序
中间件的顺序非常重要。中间件会按照它们被定义的顺序依次执行。
app.use((req, res, next) => {
console.log('First middleware');
next();
});
app.use((req, res, next) => {
console.log('Second middleware');
next();
});
6. 请求和响应对象
在 Express.js 中,req 和 res 对象分别代表请求和响应。
6.1 请求对象 (req)
请求对象包含有关客户端请求的信息,如 URL、HTTP 头、请求体等。
app.get('/user/:id', (req, res) => {
res.send(`User ID: ${req.params.id}`);
});
6.2 响应对象 (res)
响应对象用于向客户端发送响应。
app.get('/', (req, res) => {
res.send('Hello, World!');
});
7. 实践练习
7.1 创建一个简单的博客应用
-
创建路由:为博客应用创建以下路由:
GET /:显示博客首页。GET /posts:显示所有博客文章。GET /posts/:id:显示特定 ID 的博客文章。
-
使用中间件:在每个请求中记录请求的时间。
-
处理错误:如果用户访问不存在的路由,返回一个 404 错误页面。
7.2 代码示例
const express = require('express');
const app = express();
// 中间件:记录请求时间
app.use((req, res, next) => {
console.log('Time:', Date.now());
next();
});
// 路由:博客首页
app.get('/', (req, res) => {
res.send('Welcome to the Blog!');
});
// 路由:所有博客文章
app.get('/posts', (req, res) => {
res.send('List of all blog posts.');
});
// 路由:特定博客文章
app.get('/posts/:id', (req, res) => {
res.send(`Blog post with ID: ${req.params.id}`);
});
// 处理 404 错误
app.use((req, res) => {
res.status(404).send('Page not found');
});
// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
8. 总结
通过本教程,你已经学会了如何创建一个简单的 Express.js 应用,并了解了路由、中间件、请求和响应对象的基本概念。接下来,你可以继续深入学习 Express.js 的其他高级功能,如模板引擎、数据库集成、身份认证等。
希望你能继续探索 Express.js 的强大功能,并将其应用于实际项目中!